Хорновская выполнимость
Хорновская КНФ
Определение:
КНФ называется **хорновской**, если каждый её клоз содержит не более одной переменной без отрицания. Пример: $F = (\bar{a} \lor b \lor \bar{c}) \land (\bar{b} \lor \bar{d}) \land (a) \land (\bar{a} \lor d)$
HornSAT
Определение:
**HornSAT** — частный случай задачи SAT, в котором рассматриваются только хорновские КНФ. Для данной задачи существуют линейные алгоритмы решения.
Теорема о сложности HornSAT
Формулировка:
Задача HornSAT может быть решена за время $O(m)$, где $m$ — суммарное число литералов в формуле.
Д-во:
Применим метод распространения зависимостей и вычислим $UP(F)$ за время $O(m)$. Если получено значение из $\{0, 1\}$, то ответ найден. Иначе каждый оставшийся клоз содержит не менее двух литералов. В силу определения хорновской КНФ, в каждом таком клозе обязательно присутствует хотя бы одна переменная с отрицанием $\bar{x}$. Присвоим всем оставшимся переменным значение $0$. В этом случае в каждом клозе будет хотя бы один истинный литерал $\Rightarrow UP(F)$ выполнима $\Rightarrow F$ выполнима. $\square$